<template>
  <!-- 三级联动权限 -->
  <el-form :disabled="disabled" :inline="true" class="demo-form-inline">
    <!-- 一级分类 -->
    <el-form-item label="一级分类">
      <!----------------------------------------------------------------------------- 
      option的value是什么，要看select后期收集的是什么
      select收集的就是选中的option的value值 
      最终value是id，因为后期我们要收集分类的id，只有收集到分类的id才能发送下一级请求
      ----------------------------------------------------------------------------->
      <!-- change代表select数据发生改变的时候触发事件 -->
      <el-select placeholder="请选择" v-model="category1Id" @change="handlerCategory1">
        <el-option :label="c1.name" :value="c1.id" v-for="(c1,index) in category1List" :key="c1.id" />
      </el-select>
    </el-form-item>

    <!-- 二级分类 -->
    <el-form-item label="二级分类">
      <el-select placeholder="请选择" v-model="category2Id" @change="handlerCategory2">
        <el-option :label="c2.name" :value="c2.id" v-for="(c2,index) in category2List" :key="c2.id"/>
      </el-select>
    </el-form-item>

    <!-- 三级分类 -->
    <el-form-item label="三级分类">
      <el-select placeholder="请选择" v-model="category3Id">
        <el-option :label="c3.name" :value="c3.id" v-for="(c3,index) in category3List" :key="c3.id"/>
      </el-select>
    </el-form-item>
  </el-form>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
  name: 'CategorySelector'
})
</script>
<script lang="ts" setup>
  // 引入钩子函数
  import {onMounted} from "vue"
  // 引入小store模块
  import {useCategoryStore} from '@/stores/category'
  // 引入菠萝自带函数 用来解构响应式对象 
  import { storeToRefs } from 'pinia';
  // 获取到store对象
  const categoryStore = useCategoryStore()
  onMounted(()=>{
  categoryStore.getCategory1List()
  })
  // 将store当中的一、二、三、级分类数据进行解构依然是响应式数据
  const {category1List,category1Id,category2List,category2Id,category3List,category3Id} = storeToRefs(categoryStore)

  // 选中1级分类的时候触发change事件回调
  const handlerCategory1 = () => {
    categoryStore.getCategory2List()
  }

  // 选中2级分类的时候触发change事件回调
  const handlerCategory2 = () => {
    categoryStore.getCategory3List()
  }

  // 接收父组件存的的参数
  defineProps<{
    disabled:boolean
  }>()
</script>

<style lang="less" scoped></style>
